package xx.iverson.file_manager.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import xx.iverson.file_manager.entity.FileInfo;

import java.util.List;

/**
 * @author 86131
 */
@Mapper
public interface FileInfoMapper {

    // 查询所有文件（带分类名称）
    List<FileInfo> selectAllFilesWithCategory();

    // 根据ID查询文件
    FileInfo selectFileById(@Param("id") Integer id);

    // 根据分类ID查询文件（现在指向二级分类）
    List<FileInfo> selectFilesByCategoryId(@Param("categoryId") Integer categoryId);

    // 根据一级分类ID查询文件
    List<FileInfo> selectFilesByLevel1Id(@Param("level1Id") Integer level1Id);

    // 根据二级分类ID查询文件
    List<FileInfo> selectFilesByLevel2Id(@Param("level2Id") Integer level2Id);

    // 插入文件
    int insertFile(FileInfo fileInfo);

    // 更新文件信息
    int updateFile(FileInfo fileInfo);

    // 删除文件
    int deleteFile(@Param("id") Integer id);

    // 增加下载次数
    int incrementDownloadCount(@Param("id") Integer id);

    // 根据文件名搜索文件
    List<FileInfo> searchFilesByName(@Param("name") String name);

    // 检查分类下是否有文件
    int countFilesByCategoryId(@Param("categoryId") Integer categoryId);

    // 根据分类和名称模糊搜索文件
    List<FileInfo> searchFilesByCategoryAndName(@Param("categoryId") Integer categoryId, @Param("name") String name);

    // 根据一级分类和名称搜索文件
    List<FileInfo> searchFilesByLevel1AndName(@Param("level1Id") Integer level1Id, @Param("name") String name);
}